<?php session_start();
    include_once ("../bussines/OrdenCompraBR.php");
    include_once ("../entity/OrdenCompra.php");
    include_once("generales.php");
    
    if(file_exists("../entity/Constantes.php")){
        include_once ("../entity/Constantes.php");
    }
    
    if(isset($_POST["opc"])){
        
        $tipo = $_POST["tipo"];
        $cod_producto_almacen = $_POST["cod_producto_almacen"];
        $producto = $_POST["producto"];
        $cod_almacen = $_POST["cod_almacen"];
        $codigo = $_POST["codigo"];
        $cantidad = $_POST["cantidad"];
        $proveedor = $_POST["proveedor"];
        $cod_proveedor = $_POST["cod_proveedor"];
        $fecha = date_to_stamp($_POST["fecha"]);
        $num_doc = $_POST["num_doc"];
        
        $usuario_crea = $_SESSION[Constantes::K_SESSION_CODIGO_USUARIO];
        $usuario_modi = $_SESSION[Constantes::K_SESSION_CODIGO_USUARIO];
        
        if($_POST["opc"]=="lstOrden"){
            echo listarOrdenCompra();
        }elseif($_POST["opc"]=="ordAuto"){
            ordenAutomatica($cod_almacen);
            echo listarOrdenCompra();
        }elseif($_POST["opc"]=="val"){
            echo verificarOrden($cod_producto_almacen);
        }elseif($_POST["opc"]=="add"){
            agregarProducto($cod_producto_almacen);
            echo listarOrdenCompra();
        }elseif($_POST["opc"]=="limp"){
            echo limpiarSession();
        }elseif($_POST["opc"]=="cod"){
            echo generarCodigo();
        }elseif($_POST["opc"]=="Count"){
            echo getContador();
        }elseif($_POST["opc"]=="delAdd"){
            eliminarProducto($codigo);
            echo listarOrdenCompra();
        }elseif($_POST["opc"]=="upAdd"){
            actualizarOrdenCompra($codigo,$cantidad,$cod_proveedor,$proveedor);
            echo listarOrdenCompra();
        }elseif($_POST["opc"]=="ins"){
            echo grabarOrdenCompra($codigo,$fecha,$usuario_crea);
        }elseif($_POST["opc"]=="bus"){
            $page = $_POST['page'];
            $limit = $_POST['rows'];
            $sidx = $_POST['sidx'];
            $sord = $_POST['sord'];
            if (!$sidx){
               $sidx = 1;
            }
            echo mostrarOrdenCompraGrilla($num_doc,$producto,$fecha, $page, $limit, $sidx, $sord);
        }elseif($_POST["opc"]=="get"){
            echo obtenerID($num_doc);
        }elseif($_POST["opc"]=="bus1"){
            $page = $_POST['page'];
            $limit = $_POST['rows'];
            $sidx = $_POST['sidx'];
            $sord = $_POST['sord'];
        
            if (!$sidx){
               $sidx = 1;
            }
            echo mostrarDetalleOrdenCompraGrilla($num_doc,$page, $limit, $sidx, $sord);
        }
    }
    
    function mostrarDetalleOrdenCompraGrilla($num_doc,$page, $limit, $sidx, $sord){
        $bus1 = new OrdenCompraBR();
        $entity = new OrdenCompra();
        $entity->num_doc = $num_doc;
        
        $count = $bus1->numeroRegistro1($num_doc);
        
        if ($count > 0) {
            $total_pages = ceil($count / $limit);
        } else {
            $total_pages = 0;
        }
        if ($page > $total_pages){
            $page = $total_pages;
        }
        $start = $limit * $page - $limit;
        $responce->page = $page;
        $responce->total = $total_pages;
        $responce->records = $count;
        $i = 0;
        
        $detalle = $bus1->BuscarSearch1($entity, $start, $limit, $sidx, $sord);
        
        if(sizeof($detalle)){
            foreach ($detalle as $fila){
                $responce->rows[$i]['id'] = $fila->codigo;
                $responce->rows[$i]['cell'] = array($fila->codigo,$fila->cod_producto_almacen, $fila->producto,$fila->cantidad,$fila->cod_proveedor,$fila->proveedor);
                $i++;
            }
        }
        return json_encode($responce);
    }
    
    function obtenerID($num_doc){
        $get = new OrdenCompraBR();
        $entity = new OrdenCompra();
        $entity->num_doc = $num_doc;
        
        $result = $get->obtenerID($entity);
        
        return json_encode($result);
    }
    
    function mostrarOrdenCompraGrilla($num_doc,$producto,$fecha, $page, $limit, $sidx, $sord){
        $bus = new OrdenCompraBR();
        $entity = new OrdenCompra();
        $entity->num_doc = $num_doc;
        $entity->producto = $producto;
        $entity->fecha_emision = $fecha;
        
        $count = $bus->numeroRegistro($num_doc, $producto, $fecha);
        
        if ($count > 0) {
            $total_pages = ceil($count / $limit);
        } else {
            $total_pages = 0;
        }
        if ($page > $total_pages){
            $page = $total_pages;
        }
        $start = $limit * $page - $limit;
        $responce->page = $page;
        $responce->total = $total_pages;
        $responce->records = $count;
        $i = 0;
        
        $ordencompra = $bus->BuscarSearch($entity, $start, $limit, $sidx, $sord);
        
        if(sizeof($ordencompra)){
            foreach ($ordencompra as $fila){
                $responce->rows[$i]['id'] = $fila->num_doc;
                $responce->rows[$i]['cell'] = array($fila->num_doc,$fila->responsable,$fila->desc_responsable,$fila->fecha_emision);
                $i++;
            }
        }
        return json_encode($responce);  
    }
    
    function grabarOrdenCompra($codigo,$fecha,$usuario_crea){
        $brOrden = new OrdenCompraBR();
        
        $result1 = $brOrden->insertarOrdenCompra($codigo,$fecha,$usuario_crea);
        
        if($result1){
            $arregloDeta = unserialize($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]);
            if(is_array($arregloDeta)){
                if(sizeof($arregloDeta)>0){
                    foreach ($arregloDeta as $detalle){
                        $result2 = $brOrden->insertarOrdenCompraDetalle($codigo, $detalle);
                    }
                }
            }
            if($result2){
                $msj = ConstantesMensajes::K_MENSAJE_INSERT_ORDENCOMPRA_OK;
            }else{
                $msj = ConstantesMensajes::K_MENSAJE_INSERT_ORDENCOMPRA_DETALLE_NOOK;
            }
        }else{
            $msj = ConstantesMensajes::K_MENSAJE_INSERT_ORDENCOMPRA_NOOK;
        }
        return $msj;
    }
    
    function actualizarOrdenCompra($codigo,$cantidad,$cod_proveedor,$proveedor){
        if(isset($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA])){
            $arregloDeta = unserialize($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]);
            foreach ($arregloDeta as $clave =>$detalle){
                if($detalle->codigo == $codigo){
                    $arregloDeta[$clave]->cantidad = $cantidad;
                    $arregloDeta[$clave]->cod_proveedor = $cod_proveedor;
                    $arregloDeta[$clave]->proveedor = $proveedor;
                }
            }
            $_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA] = serialize($arregloDeta);
        }
    }
    
    function eliminarProducto($codigo){
        if(isset($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA])){
            
            $arregloDeta = unserialize($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]);
            $indice = -1;
            
            foreach ($arregloDeta as $clave => $detalle){
                if($detalle->codigo == $codigo){
                    $existe = true;
                    $indice = $clave;
                    break;
                }
            }
            if($existe){
                unset($arregloDeta[$indice]);
                $_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA] = serialize($arregloDeta);
            }
        }
        return true;
    }
    
    function getContador(){
        $contador = $_SESSION[ConstanteVariables::K_SESSION_CONTADOR_ORDEN_COMPRA];
        return $contador;
    }
    
    function generarCodigo(){
        $cod = new OrdenCompraBR();
        $result = $cod->generarCodigo();
        return json_encode($result);
    }
    
    function limpiarSession(){
        $_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]="0";
        
        if($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]=="0"){
            return 1;
        }else{
            return 0;
        }
    }
    
    function agregarProducto($cod_producto_almacen){
        $brOrden = new OrdenCompraBR();
        $arregloDeta = unserialize($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]);
        $arregloDeta[] = $brOrden->listarXProductoAlmacen($cod_producto_almacen);
        $_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA] = serialize($arregloDeta);
        return true;
    }
    
    function verificarOrden($cod_producto_almacen){
        $arregloDeta = unserialize($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]);
        $c = 0;
        if($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA] != "0"){
            foreach ($arregloDeta as $detal){
                if($detal->codigo == $cod_producto_almacen){
                    $c++;
                }
            }
        }
        
        if($c>0){
            $msj = ConstantesMensajes::K_MENSAJE_VALIDAR_AGREGARPRODUCTO_ORDENCOMPRA;
        }else{
            $msj = '0';
        }
        return $msj;
    }
    
    function ordenAutomatica($cod_almacen){
        $brOrden = new OrdenCompraBR();
        $_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA] = serialize($brOrden->listarXAlmacen($cod_almacen));
        return true;
    }
    
    function listarOrdenCompra(){

        $count = 1;   
        $html = "<table id='tblOrdenCompra' style='width:100%;' cellspacing='0' cellpadding='0' border='0' >";
        $html.= "<tbody>";
        $arregloDeta = unserialize($_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA]);
        
        if(($arregloDeta != "")){
//            echo $_SESSION[ConstantesArreglos::K_SESSION_ARREGLO_ORDEN_COMPRA];
            foreach ($arregloDeta as $detal){
                $html.= "<tr style='height:35px;'>";
                $html.= "<td align='center' class='ui-widget-content' style='width:51px;' > <input type='hidden' id='txtCodigo_".$count."' value='".$detal->codigo."' />".$count."</td>";
                $html.= "<td align='center' class='ui-widget-content' style='width:386px;' >".$detal->producto."</td>";
                $html.= "<td align='center' class='ui-widget-content' style='width:110px;' ><input type='text' id='txtCantidad_".$count."' value='".$detal->cantidad."' onkeypress='return solonumeros(event);' size='5' class='cssInput' /></td>";
                $html.= "<td align='center' class='ui-widget-content' style='' >"
                        ."<input type='text' id='txtProveedor_".$count."' value='$detal->proveedor' />"
                        ."<input type='hidden' id='hidProveedor_".$count."' value='$detal->cod_proveedor' />"
                        ."  <a href=javascript:eliminarProducto('".$detal->codigo."'); ><img src='images/botones/delete.png' width=16px /></a>";
                $html.= "</td>";
                $html.= "</tr>";            
                $count ++;
            }
            $_SESSION[ConstanteVariables::K_SESSION_CONTADOR_ORDEN_COMPRA] = $count;
        }else{
            $html.="<tr><td align='center' >No hay productos </td></tr>";
            $count = 0;
        }
        $html.= "</tbody>";
        $html.= "</table>";
        
        return $html;
    }
?>